Elastic BeanstalkのCloudWatch Logs のストリーミングを試してみた
はじめに
AWSチームのすずきです。
AWS Elastic Beanstalk (以下EB)、2016年12月にリリースされたバージョン2.3.0のプラットフォームより、 ログ管理機能が強化され、CloudWatch Logs へのログ出力が簡単に設定、利用する事が可能になりました。
今回、EBの管理画面(Webコンソール)を利用して、アクセスログなどをCloudWatchログに出力する設定を行う機会がありましたので、紹介させて頂きます。
参考リンク
- Release: AWS Elastic Beanstalk Service Updates on 2016-12-22
-
Amazon CloudWatch Logs で Elastic Beanstalk を使用する: CloudWatch Logs のストリーミング
設定
新規環境
- EB環境を新規に作成する場合、「オプションを設定」、「ソフトウェアの設定」で設定が可能です。
新しい環境の作成
ソフトウェアの設定
CloudWatch Logs設定
- ログのストリーミング「有効」をチェックします。
- CloudWatch Logs 上に保存するログの保存期間設定について指定する事が可能です。
既存環境
- バージョン2.3.0 以降のEBプラットフォームであれば、CloudWatch Logsを利用したログのストリーミング設定が可能です。
プラットフォームバージョン確認
ソフトウェア設定
- 「ソフトウェア設定」より、「CloudWatch ログ設定」が可能です
CloudWatch Logs設定
- インスタンスプロファイル、必要最小限のIAM権限に制限されていて「logs」(CloudWatch Logs)の許可が無い場合、追加が必要です。
参考
確認
ロググループ指定
- CloudwatchのAWSコンソールのロググループ「/aws/elasticbeanstalk/<EB環境名>/<対象ログ>」を指定します。
ログストリーム指定
- ログストリームとして「インスタンスID」を指定すると、Cloudwatch Logsに保存されたログが確認できました。
まとめ
バージョン2.3.0のプラットフォームのEB環境、アクセスログやEBの動作ログ(eb-activity.log)の CloudWatch Logs に保存、簡単に設定して、利用する事が可能になりました。
また、ログを長期保持する必要の無い開発環境などでは、EBでのログ設定時、保持期間は短期、EB環境の終了時にログを削除とする事で、 ログの散乱や保存費用の抑制が可能です。
「.ebextensions」の利用が障壁となりCloudWatch Logs利用ができず、オートスケールの縮退時などにアクセスログが失われていた環境では、 今回紹介させて頂いたEBのログストリームの有効化、是非お試しください。
尚、EB標準で対応しないOSログや、アプリケーションログなどの退避が必要な場合には、 従来通り「.ebextensions」を利用したCloudwatchLogs設定の併用も可能です。
また、大量のログが発生する環境で、CloudwatchLogsのデータ転送費用(1GBあたり0.76$:東京、0.5$:US)や検索性が問題となる場合、 fluentd(td-agent)経由で Kinesis Firehose(1GBあたり0.029$:US)などの利用もお試し頂ければと思います。
fluent-plugin-kinesis-firehoseでAmazon Kinesis Firehoseにログを転送する